home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 25 / AACD 25.iso / AACD / Programming / yaec / docs / history.txt < prev    next >
Encoding:
Text File  |  2001-08-12  |  9.2 KB  |  347 lines

  1.  
  2. ----------------------------
  3.              Version history
  4.              ---------------
  5.  
  6.  
  7.  YAEC 19a
  8.  --------
  9.  
  10. 1.9:
  11.  
  12.    6:th public release (Bugfix release)
  13.  
  14.    Well, last version had been pretty rearranged internally, it shows :)
  15.  
  16.  
  17.    *** front-end ***
  18.  
  19.    - Fix : RAISE keyword had no effect.
  20.  
  21.    - Fix : oop was messed up.
  22.  
  23.    - Fix : conditional compilation did not work.
  24.  
  25.    - Fix : indexing buggy ...gaah..
  26.  
  27.    *** back-end ***
  28.  
  29.    - Fix : nilcheck/ptrcheck was messed up.
  30.  
  31.    *** linklib ***
  32.  
  33.    - Fix : stringformatting - now formats hexa correctly AND is
  34.      even faster then before ! :)
  35.  
  36.    - Fix : StrAdd() with len did not set strlen correctly.
  37.  
  38.    - now libraries have exec,dos,intuition and graphics
  39.      libraries opened automatically. (just as exes).
  40.  
  41.    - It is now possible to use WriteF(),PrintF(),PutFmt()
  42.      from libraries!
  43.  
  44.    - Added new formatcode : \f  --  for floats !
  45.      see example.
  46.  
  47.    *** source ***
  48.  
  49.    - Added debuglib.e and ddebuglib.e, modules with inline macros.
  50.      You need the appropriate linklibs from Amiga® to use them.
  51.  
  52.    *** front-end ***
  53.  
  54.    - Implemented compiler-arg DEF/K.
  55.      Define a globally visible symbol to be used with
  56.      conditional compilation. ex : DEF DEBUG.
  57.      (The global symbol YAEC is always defined)
  58.  
  59.  
  60. 1.8a: (July 15 2001)
  61.  
  62.    Fifth public release.
  63.  
  64.    *** front-end ***
  65.  
  66.    - Bugfixed : relative module path (*).
  67.  
  68.    - macros (#define) implemented.
  69.      Bonus : 0-arg macros "()", "EXPORT #define" and "#undef" keyword.
  70.      experimental : "IMPORT #define <label>"
  71.        -> grab a #define from main-source into module.
  72.  
  73.    - conditional compilation (#ifdef,#ifndef,#endif) moved back in.
  74.      bit of a fast hack but works for simpler stuff.
  75.  
  76.    - MACRO keyword -- expression substitution.
  77.      The better way to do it. supports varargs! see docs for more info.
  78.  
  79.    *** back-end/linklib ***
  80.  
  81.    - dynamic strings/lists may have more than 32k elements.
  82.      (theoretically 2 gig!) using 32bit currlen,maxlen
  83.      (which is faster in 32bit memory)
  84.  
  85.    *** front-end ***
  86.  
  87.    - Constant "VARARGS" contains the latest number of variable
  88.      arguments in MACRO.
  89.      guess what this example does:
  90.      MACRO FmtPrint(fmt,...) IS Stores(...) BUT (A0 := fmt) BUT \
  91.                                 (A1 := A7) BUT ASM " bsr PrintFmt" BUT \
  92.                                 Rems(VARARGS*4)
  93.      bug : does not nest properly. (needs a stack..)
  94.  
  95.    - automatic "#define YAEC". useful with conditional compilation.
  96.  
  97.    - multiline RAISE statement.  (finally)
  98.  
  99.    - "EXPORT MODULE ..." well..guess what it does..  (alpha)
  100.  
  101.    - CONSTants now include static strings,lists,arrays,objects!
  102.      ex : CONST MYVAL=10, MYSTRING='blabla',
  103.                 MYLIST=[1,2,-0.6, {func}, BLABLA],
  104.                 MYARRAY=[4,5,6,7]:INT               (beta)
  105.  
  106.    - Heheh... "MACRO" changed name again to "#macro".
  107.  
  108.    - Conditional compilation : #else keyword. (alpha)
  109.  
  110.    - Possible bugfix : Conditional compilation _may_ work 100% now :)
  111.  
  112.    - "<<" and ">>" accepted in constant expressions.
  113.      ex : CONST BLA_F = 1 << BLA_B
  114.  
  115.    *** misc ***
  116.  
  117.    - wrote/added amigalib.e
  118.  
  119.  
  120.  
  121. 1.7a: (June 15 2001)
  122.  
  123.    *** misc ***
  124.  
  125.    - some more sources in examples/ drawer.
  126.  
  127.    *** linklib ***
  128.  
  129.    - Bugfixed FastDispose(), some errors where introduced in prev version.
  130.  
  131.    - Bugfixed MidStr(), now copies 0 bytes if len=0.
  132.  
  133.    - Bugfixed SetStr(), didnt set nil-byte.
  134.  
  135.    - Bugfixed StrCopy(),MidStr(): now sets estring-len to 0 if copy-len is 0.
  136.  
  137.  
  138. 1.6a: (April 17 2001)
  139.  
  140.    *** Front-end ***
  141.  
  142.    - Speeded up module-parsing a little bit.
  143.  
  144.    - LONG/INT/CHAR didnt continiue on several lines. Fixed!
  145.  
  146.    - Well, one of the very last incompabilities just went away..
  147.      MODULE 'alibrary' is now allowed ! :)
  148.  
  149.    - Disabled unification and lisp-cells as they are not really
  150.      stable and bugfree. Positive : compiler got faster! :)
  151.  
  152.    - Disabled #define, #ifdef, #ifndef, #endif.
  153.      (#define still gets parsed, but skipped)
  154.      Yaec does not have a real pre-processor at the moment,
  155.      but its planned. For now, a new keyword MACRO can
  156.      be used instead of #define in many cases.
  157.      ex : MACRO BLABLANAME IS 'blabla.library'
  158.           MACRO Max(x,y) IS IF x > y THEN x ELSE y
  159.  
  160.      MACROs may be EXPORTed. (EXPORT MACRO ...)
  161.      For more examples, look at the system-modules.
  162.  
  163.    - Changed syntax of single-line asm (ASM).
  164.      Before : ASM <instruction>
  165.      Now :    ASM '<whatever>' -> Note the apostrofes !
  166.      Some advantages : 1. e-style comments can be appended.
  167.                        2. Multiple ASM via BUT.
  168.  
  169.    - Completely got rid of EXTERN keyword and .ext files!
  170.      The E language itself is now capable of doing all that
  171.      and more. External defenitions are now in standard
  172.      ascii module-format.
  173.  
  174.    - EXIT keyword implemented. (works with _all_ loop constructs)
  175.  
  176.    - relative module path (*) now works exactly as with EC.
  177.  
  178.    - multiple return values (3) implemented.
  179.  
  180.    - "EXPORT DEF ..." in modules is now allowed for compability.
  181.      Preferred way is to type "IMPORT DEF ...".
  182.  
  183.    - Constant folding implemented.
  184.  
  185.    - Experimental error-recovery.
  186.  
  187.    *** Linklib ***
  188.  
  189.    - o FastNew(),FastDispose() now uses very fast recycling pool!
  190.        (thanks to Wouter for helping here!)
  191.      o Fix: FastNew() now raises "MEM" if out of memory.
  192.      o Some NEW/END bugs removed.
  193.      o Optimised NEW:s exceptiongenerating. (saved some instructions)
  194.  
  195.    - Startupcode would fail on > v40, when it should fail on < v40. Fixed.
  196.  
  197.    - Fix : Exes now returns exception as return-code. (if throwed out)
  198.  
  199.    - exe/lib/dev v39 support. not tested but hey!.. send me a line if it works.
  200.  
  201.    *** back-end ***
  202.  
  203.    - produces much better code now.
  204.  
  205.    *** Misc ***
  206.  
  207.    - bin/fdtool replaced with bin/fd2module.
  208.  
  209.  
  210. 1.5a:   (April 10 2001)
  211.  
  212.    Fourth public release.
  213.  
  214.    - ReadStr() didnt set stringlen correctly. does now.
  215.  
  216.    - Nested comments didnt work. Should now.
  217.  
  218.    - Amiga.lib working again :)
  219.  
  220.    - Added two .ext files : debuglib.ext and ddebuglib.ext
  221.      for using debug.lib and ddebug.lib from Amiga® Dev CD.
  222.  
  223.    - Added bin/fdtool - convert Your .fd:s to .ext:s with this.
  224.  
  225.    - All the v40 standard Amiga librarybases are predefined now!
  226.  
  227.    - Stringformatting : added \z support. (zero-fill)
  228.  
  229.    - Globals now accept constants and simple constant expressions
  230.      as defaultvalue. ex : DEF myglobal=ACONSTANT*4-7
  231.  
  232.    - FPU is now only required if floating point is used.
  233.      (previous version required fpu anyway)
  234.  
  235.    - Added compiler args : WB/S,OPTI/S,HOLD/S,LARGE/S,SF=SHOWFILENAME/S.
  236.      OPTI and LARGE does nothing for now, but may in future.
  237.  
  238.    - Default arguments to procedures works now.
  239.  
  240.    - PUBLIC/PRIVATE in OBJECT declaration works now.
  241.  
  242.    - Parameters to procedures where swapped. Fixed.
  243.  
  244.    - Librarymode now automatically creates .fd file.
  245.      (use bin/fdtool to convert it to .ext)
  246.  
  247.    - Linkobject mode automatically creates .ext file.
  248.      (still a bit experimental and under construction)
  249.  
  250.    - Fixed "IS" in "PROC name([params]) [OF name] IS <exp>".
  251.      <exp> must be on the same line as "IS".
  252.  
  253.    - "OPT LINKOBJ" turned into "LINKOBJECT".
  254.      (must be first thing in source (like LIBRARY)).
  255.  
  256.    - "*" preceeding module/extern-name now inserts path to
  257.      the main-source. This is not perfect, but atleast makes
  258.      things a little better.
  259.  
  260.    - Ptr-math is _allowed_ for now. (as in ec3.3a) Maybe it stays.
  261.      Probably it will return, but a bit smarter; for example things
  262.      like this should be spotted as errors, always :
  263.      "array + array" or "ptr * 10" etc..
  264.  
  265.    - Added some missing internal functions : Mouse(), LeftMouse(),
  266.      WaitLeftMouse(), RealF(), Rnd(), RndQ(), RealVal().
  267.  
  268.    - Multi-line DEF (DEF statement can continiue on several lines).
  269.  
  270.    - Modules can now be check-compiled.
  271.  
  272.    - OPT STACK implemented : OPT STACK=<sizevalue>
  273.      -> manually set stacksize, overrides YAEC:s estimation.
  274.  
  275.    - Added keywords : JUMP and LAB.
  276.      -> JUMP <labelname> : Jump to a local label.
  277.      -> LAB <labelname>  : Define a local label.
  278.  
  279.    - Global labels (label:)
  280.  
  281.    - Global storage definition (LONG 1,2,3,.. / INT / CHAR)
  282.  
  283.    - Global Asm (ASM.. / ENDASM)
  284.  
  285.  
  286. 1.4a: (Feb 22 2001)
  287.  
  288.    Third public release.
  289.  
  290.    - Rewrote the hole type-system. Its real good now,
  291.      and ready for the future.
  292.  
  293.    - NEW/END/++/-- fully implemented.
  294.  
  295.    - Added AFD-Copyright Notice.
  296.  
  297.    - YAEC is now SHAREWARE.
  298.  
  299.    - Fixed NILCHECK and added PTRCHECK cli-args.
  300.  
  301.    - Compiling LINKOBJ now automatically creates .ext file.
  302.      (this means its usable now :))
  303.  
  304.    - LIBRARY/DEVICE mode ! (see examples)
  305.      (device mode not tested)
  306.  
  307.    - Fixed a nasty bug in externs that could cause crashes
  308.      in some executables.
  309.  
  310.    - Fixed arguments to procedures so they are evaluated
  311.      in the same way they are on ec3.3a, that is from
  312.      left to right! some programs should work beter now! :)
  313.  
  314.    - Fixed SELECT statement so it accepts "x OF y".
  315.  
  316.    - Amigalib support gone again.. :(
  317.  
  318.  
  319. 1.3b: (Jan 21 2001)
  320.  
  321.    - Added Amigaguide® documentation.
  322.  
  323.    - SetStdRast() was missing.
  324.  
  325.    - Enabled 68881/2 fpu-asm    (Martin Kuchinka)
  326.  
  327.    - Added Amigalib support. -> amigalib.ext
  328.  
  329.    - Improved NEW, objectptr[] still missing.
  330.  
  331.    - Added END keyword.
  332.  
  333.  
  334. 1.2b: (Jan 1 2001)
  335.  
  336.    Second public release
  337.  
  338.    - Fixed some archiveing errors.
  339.  
  340.    - Methods returned crap.
  341.  
  342.  
  343. 1.1.1 Beta: (Dec 2000)
  344.  
  345.    First public release
  346.  
  347.